package br.com.gestacard.sync.entidade;


import javax.persistence.Column;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.MappedSuperclass;

import org.hibernate.annotations.ForeignKey;

import com.powerlogic.jcompany.dominio.PlcBaseEntity;
import com.powerlogic.jcompany.dominio.valida.PlcValidacaoUnificada;

@MappedSuperclass
@PlcValidacaoUnificada
public abstract class Contato extends PlcBaseEntity {

	private static final long serialVersionUID = 1L;

	@Id 
	@Column (name = "ID_CONTATO", nullable=false, length=5)
	private Long id;
	
	@Column (name = "NOME", nullable=false, length=100)
	private String nome;
	
	@Column (name = "DATA_ANIVERSARIO", nullable=false, length=7)
	private String dataAniversario;
	
	@Column (name = "E_MAIL", nullable=false, length=100)
	private String email;
	
	@ManyToOne (targetEntity = MunicipioEntity.class, fetch = FetchType.LAZY)
	@ForeignKey(name="FK_CONTATO_MUNICIPIO")
	@JoinColumn (name = "ID_MUNICIPIO", nullable=false)
	private Municipio municipio;
	
	@ManyToOne (targetEntity = TipoLogradouroEntity.class, fetch = FetchType.LAZY)
	@ForeignKey(name="FK_CONTATO_TIPOLOGRADOURO")
	@JoinColumn (name = "ID_TIPO_LOGRADOURO", nullable=false)
	private TipoLogradouro tipoLogradouro;
	
	@Column (name = "LOGRADOURO", nullable=false, length=100)
	private String logradouro;
	
	@Column (name = "NUMERO", nullable=false, length=10)
	private String numero;
	
	@Column (name = "COMPLEMENTO", nullable=false, length=50)
	private String complemento;
	
	@Column (name = "CEP", nullable=false, length=8)
	private String cep;
	
	@Column (name = "TEL_CELULAR", nullable=false, length=10)
	private String telCelular;
	
	@Column (name = "TEL_FIXO", nullable=false, length=10)
	private String telFixo;
	
	@Column (name = "RAMAL", nullable=false, length=4)
	private String ramal;
	
	@Column (name = "CONTATO", nullable=false, length=100)
	private String contato;
	
	@Enumerated(EnumType.STRING)
	@Column (name = "TIPO_CONTATO", nullable=false, length=2)
	private TipoContato tipoContato;
	
	@Column (name = "BAIRRO", nullable=false, length=100)
	private String bairro;
	

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id=id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome=nome;
	}

	public String getDataAniversario() {
		return dataAniversario;
	}

	public void setDataAniversario(String dataAniversario) {
		this.dataAniversario=dataAniversario;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email=email;
	}

	public Municipio getMunicipio() {
		return municipio;
	}

	public void setMunicipio(Municipio municipio) {
		this.municipio=municipio;
	}

	public TipoLogradouro getTipoLogradouro() {
		return tipoLogradouro;
	}

	public void setTipoLogradouro(TipoLogradouro tipoLogradouro) {
		this.tipoLogradouro=tipoLogradouro;
	}

	public String getLogradouro() {
		return logradouro;
	}

	public void setLogradouro(String logradouro) {
		this.logradouro=logradouro;
	}

	public String getNumero() {
		return numero;
	}

	public void setNumero(String numero) {
		this.numero=numero;
	}

	public String getComplemento() {
		return complemento;
	}

	public void setComplemento(String complemento) {
		this.complemento=complemento;
	}

	public String getCep() {
		return cep;
	}

	public void setCep(String cep) {
		this.cep=cep;
	}

	public String getTelCelular() {
		return telCelular;
	}

	public void setTelCelular(String telCelular) {
		this.telCelular=telCelular;
	}

	public String getTelFixo() {
		return telFixo;
	}

	public void setTelFixo(String telFixo) {
		this.telFixo=telFixo;
	}

	public String getRamal() {
		return ramal;
	}

	public void setRamal(String ramal) {
		this.ramal=ramal;
	}

	public String getContato() {
		return contato;
	}

	public void setContato(String contato) {
		this.contato=contato;
	}

	public TipoContato getTipoContato() {
		return tipoContato;
	}

	public void setTipoContato(TipoContato tipoContato) {
		this.tipoContato=tipoContato;
	}

	public String getBairro() {
		return bairro;
	}

	public void setBairro(String bairro) {
		this.bairro = bairro;
	}

}
